154 Star 577 Fork 533

Ascend / ModelLink

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
贡献代码
同步代码
取消
提示: 由于 Git 不支持空文件夾,创建文件夹后会生成空的 .keep 文件
Loading...
README

GitHub Documentation

简体中文 | English

ModelLink旨在为华为 昇腾芯片 上的大语言模型提供端到端的解决方案, 包含模型,算法,以及下游任务。

ModelLink解决方案概览


支持功能

当前ModelLink支撑大模型使用功能:

强化学习等特性持续研发中....

支持模型

当前ModelLink支持下列模型的预训练以及微调:

模型 参数 预训练 推理 LoRA SFT 对话 评估 贡献方
Aquila 7B pretrain generate -- -- -- eval 【昇腾贡献】
Aquila2 7B pretrain generate -- -- -- eval 【社区贡献】
Baichuan 7B pretrain generate -- -- -- eval 【昇腾贡献】
13B pretrain generate -- -- -- eval 【昇腾贡献】
Baichuan2 7B pretrain generate -- -- -- eval 【昇腾贡献】
13B pretrain generate -- -- -- eval 【昇腾贡献】
Bloom 7B1 pretrain generate -- -- -- eval 【昇腾贡献】
176B pretrain generate -- -- -- eval 【昇腾贡献】
CodeLlama 34B pretrain generate -- -- -- eval 【社区贡献】
InternLM 7B pretrain generate -- -- -- eval 【昇腾贡献】
65B pretrain -- -- -- -- -- 【昇腾贡献】
LLaMA 7B pretrain generate lora -- -- eval 【昇腾贡献】
13B pretrain generate lora -- -- eval 【昇腾贡献】
33B pretrain generate lora -- -- eval 【昇腾贡献】
65B pretrain generate lora -- -- eval 【昇腾贡献】
LLaMA2 7B pretrain generate lora -- -- eval 【昇腾贡献】
13B pretrain generate lora -- -- eval 【昇腾贡献】
34B pretrain generate lora -- -- eval 【昇腾贡献】
70B pretrain generate lora -- -- eval 【昇腾贡献】
LLaMA3 8B pretrain generate -- -- chat eval 【社区贡献】
70B pretrain generate -- -- -- eval 【社区贡献】
Qwen 7B pretrain generate -- -- -- eval 【昇腾贡献】
14B pretrain generate -- -- -- eval 【昇腾贡献】
72B pretrain generate -- -- -- eval 【昇腾贡献】
Yi 34B pretrain generate -- -- -- eval 【社区贡献】
Mixtral 8x7B pretrain generate -- -- -- eval 【昇腾贡献】
Mistral 7B pretrain generate -- -- -- eval 【昇腾贡献】
Qwen1.5 7B pretrain generate -- -- -- eval 【社区贡献】

脚本命名规则

脚本 规则
pretrain_xxx.sh 预训练脚本
tune_xxx.sh LoRA脚本
generate_xxx.sh 推理脚本
xxxx_chat_xx.sh 对话脚本
evaluation_xxx.sh 评估脚本

模型版本与性能说明

上述列表中支持的模型,我们在examples文件夹中提供了各模型的训练脚本和readme说明,里面有详细的模型训练、推理、评估流程。

【需要注意模型使用时的配套环境版本,参考如下】

软件 版本
Python 3.8
driver Ascend HDK 23.0.0
firmware Ascend HDK 23.0.0
CANN CANN 7.0.0
torch 2.1.0、2.2.0
torch_npu release v5.0.0

【基于现版本我们实测的性能情况统计如下】

模型 参数 集群规模 精度模式 性能 参考性能
Aquila 7B 1x8 BF16 2849 2874
Aquila2 7B 1x8 FP16 3323 2673
Baichuan 7B 1x8 FP16 2685 2036
13B 1x8 FP16 1213 862
Baichuan2 7B 1x8 BF16 2664 3969
13B 1x8 BF16 1668 2062
Bloom 7B1 1x8 FP16 2034 2525
176B 12x8 BF16 100 107
CodeLlama 34B 2x8 BF16 837 762
InternLM 7B 1x8 BF16 2776 2854
65B 4x8 BF16 341 414
LLaMA 7B 1x8 FP16 3600 3804
13B 1x8 FP16 1895 2012
33B 4x8 FP16 621 776
65B 4x8
BF16 348 426
LLaMA2 7B 1x8 BF16 4200 3850
13B 1x8 BF16 1990 1920
34B 2x8 BF16 690 796
70B 8x8 BF16 350 339
LLaMA3 8B 1x8 BF16 2483 2674
70B 8x8 BF16 283 --
Qwen 7B 1x8 BF16 2499 2867
14B 1x8 BF16 1560 1578
72B 16x8 BF16 285 345
Yi 34B 2x8 BF16 809 730
Mixtral 8x7B 2x8 BF16 487 610
Mistral 7B 1x8 BF16 2806 2734
Qwen1.5 7B 1x8 BF16 2548 2578

加速算法与融合算子

ModelLink支持张量并行、流水线并行、序列并行、重计算、分布式优化器等多种加速算法和融合算子,下表为各种加速特性对应的使能开关:

加速特性 使能参数
张量并行 --tensor-model-parallel-size
流水线并行 --pipeline-model-parallel-size
流水并行动态划分 --num-layer-list
序列并行 --sequence-parallel
重计算 --recompute-granularity
分布式优化器 --use-distributed-optimizer
DDP allreduce 掩盖 --overlap-grad-reduce
DDP allgather 掩盖 --overlap-param-gather
Flash attention --use-flash-attn
Fused rmsnorm --use-fused-rmsnorm
Fused swiglu --use-fused-swiglu
mc2 --use-mc2
Fused rotary
position embedding
--use-fused-rotary-pos-emb
Sliding Window Attention --sliding-window
torchrun $DISTRIBUTED_ARGS pretrain_gpt.py \
    --tensor-model-parallel-size ${TP} \
    --pipeline-model-parallel-size ${PP} \
    --num-layer-list 1,2,2,2,1 \
    --sequence-parallel \
    --recompute-granularity full \
    --recompute-method block \
    --recompute-num-layers 72 \
    --use-distributed-optimizer \
    --use-flash-attn \
    --use-fused-rmsnorm \
    --use-fused-swiglu \
    --overlap-grad-reduce \
    --overlap-param-gather \
    --use-fused-rotary-pos-emb \
    --use-mc2 \
    --sliding-window 4096 \
    ... \
    ...

基于昇腾芯片采集Profiling数据

Modellink支持基于昇腾芯片采集profiling数据,以提供对模型运行情况的分析,主要API如下:

--profile                        # 打开profiling采集数据开关
--profile-step-start  5          # 指定开启采集数据的步骤
--profile-step-end 6             # 指定结束采集数据的步骤,实际采集步数为 end-start,不包含end
--profile-ranks 0 1 2 3 4        # 指定采集数据的卡号,默认为0,可以设置为 0 1 2 3 4 5 6 7 8 9 列表指定全局卡号
--profile-level level2           # 数据采集水平,level0, 1, 2, 级别越高采集信息越多,默认为level0
--profile-with-cpu               # 是否采集CPU数据,加入参数采集
--profile-with-stack             # 采集指令运行堆栈,加入参数采集
--profile-with-memory            # 是否采集内存,加入参数采集
--profile-record-shapes          # 是否采集计算shape,加入参数采集
--profile-save-path ./profile_dir    # profiling数据采集保存路径

致谢


ModelLink由华为公司的下列部门联合贡献 :

  • 昇腾计算产品部
  • 计算算法部
  • 计算研究部
  • 开源计算工具部
  • 公共开发部
  • 全球技术服务部

感谢来自社区的每一个PR,欢迎贡献 ModelLink


安全声明

ModelLink安全声明

空文件

简介

昇腾大模型仓库 展开 收起
Python 等 2 种语言
取消

发行版 (2)

全部

贡献者

全部

近期动态

加载更多
不能加载更多了
Python
1
https://gitee.com/ascend/ModelLink.git
git@gitee.com:ascend/ModelLink.git
ascend
ModelLink
ModelLink
master

搜索帮助